#!/bin/bash
# Copyright (C) 2021 Jakub ńĆajka jcajka@redhat.com
# Modified by Funda Wang <fundawang@yeah.net> for golang bundled
# dependecy generator, 2025
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

provides=""

dir="${1:-.}"

if [ ! -f /usr/bin/go ] || [ ! -x /usr/bin/go ]; then
  exit 0
fi

have_go_executable=0
while read line; do
  /usr/bin/go version $line 2>&1 | grep -v 'not a Go executable' > /dev/null
  if [ $? == 0 ]; then
    have_go_executable=1
  fi
done

if [ $have_go_executable == 0 ]; then
  exit 0
fi

for bundle in $(find $dir -name modules.txt); do
        provides="$provides\n$(cat "$bundle" |
                grep "^# " |
                grep -v "# explicit" |
                grep -v "^#.*=> \.\./" |
                grep -v "^#.*=> \./" |
                sed -r s/"^#.* => "// |
                sed -r "s/# //" |
                sed -r "s:(.*) v(.*):bundled(golang(\1)) = \2:" |
                sed '/= .*/s/-/./g')"
        done
echo -e "$provides" | sed 's/-/./g' | sort -u
